import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import VueJsx from '@vitejs/plugin-vue-jsx';
import VueRouter from 'unplugin-vue-router/vite';
import { resolve } from 'node:path';
import Unocss from 'unocss/vite';
import topLevelAwait from "vite-plugin-top-level-await";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    VueJsx(),
    Unocss(),
    topLevelAwait({
      promiseExportName: "__tla",
      promiseImportName: i => `__tla_${i}`
    }),
    // 自动配置路由
    VueRouter({
      routesFolder: './src/views',
      dts: './typed-router.d.ts'
    })
  ],
  resolve: {
    alias: [
      {
        find: '@',
        replacement: resolve(__dirname, './src')
      }
    ]
  },
  server: {
    host: '0.0.0.0',
    port: 8088,
    open: true,
    proxy: {
      '^/api': {
        target: 'https://xyz.macnninc.com',
        // target: 'http://127.0.0.1:7001',
        changeOrigin: true,
        rewrite: path => path.replace(/^\/api/, '/fronterp')
      },
      '^/upload': {
        // target: 'http://127.0.0.1:7001/upload',
        changeOrigin: true,
        rewrite: path => path.replace(new RegExp(`^/upload`), '')
      }
    },
    // 提前转换和缓存文件以进行预热。可以在服务器启动时提高初始页面加载速度，并防止转换瀑布。
    warmup: {
      // 请注意，只应该预热频繁使用的文件，以免在启动时过载 Vite 开发服务器
      // 可以通过运行 npx vite --debug transform 并检查日志来找到频繁使用的文件
      clientFiles: ['./index.html', './src/{components,api}/*']
    }
  }
});
